var stringName = ["紫色@2x", "红色@2x", "绿色@2x", "蓝色@2x", "黄色@2x"];
var Effect = cc.Class({
  extends: cc.Component,

  properties: {
    StarEffectPrefabs: cc.Node,
    _StarEffectList: [],

    //ShotBoomPrefabs: cc.Prefab,
    //_ShotBoomEffectList : [],

    EffectStar: {
      type: cc.SpriteFrame,
      default: [],
    },
    Atlas: cc.SpriteAtlas,
  },

  statics: {
    Instance: null,
  },

  onLoad() {
    Effect.Instance = this;
    /*
        for(var i = 0;i<10;i++)
        {
            var starEffectNode = cc.instantiate(this.StarEffectPrefabs);
            starEffectNode.parent = this.node;
            this._StarEffectList.push(starEffectNode);
        }
        */
  },

  /**
   * 用于在游戏中播放星效（星形粒子效果）
   * @param {*} pos
   * @param {*} colorType
   */
  PlayStarEffect(pos, colorType) {
    //   获取或创建粒子效果节点
    var starEffectNode =
      this._StarEffectList.length == 0
        ? cc.instantiate(this.StarEffectPrefabs)
        : this._StarEffectList.pop();
    // 将粒子效果节点的位置设置为传入的 pos
    starEffectNode.setPosition(pos);
    // 设置粒子效果节点的父节点
    starEffectNode.parent = this.node;
    // 将粒子效果节点设置为激活状态，使其可见
    starEffectNode.active = true;
    // 获取粒子效果节点的 cc.ParticleSystem 组件
    var starEffectCom = starEffectNode.getComponent(cc.ParticleSystem);
    // 根据传入的 colorType 设置粒子样式
    starEffectCom.spriteFrame = this.EffectStar[colorType];
    //starEffectCom.spriteFrame = this.Atlas.getSpriteFrame(stringName[colorType]);
    // 重置粒子系统，使其重新开始播放
    starEffectCom.resetSystem();
    // 获取粒子系统的生命周期（持续时间）
    var time = starEffectCom.life;
    // 使用 scheduleOnce 方法在粒子系统生命周期结束后执行回调函数
    this.scheduleOnce(function () {
      this._StarEffectList.push(starEffectNode);
      // 在回调函数中，将粒子效果节点推回 _StarEffectList 以供下次复用
      starEffectNode.active = false;
    }, time);
  },

  playShootStarEffect(pos) {
    var starEffectNode =
      this._ShotBoomEffectList.length == 0
        ? cc.instantiate(this.ShotBoomPrefabs)
        : this._ShotBoomEffectList.pop();

    //var starEffectNode = cc.instantiate(this.StarEffectPrefabs);

    starEffectNode.setPosition(pos);

    starEffectNode.parent = this.node;

    starEffectNode.active = true;

    var starEffectCom = starEffectNode.getComponent(cc.ParticleSystem);

    //var path = "resources/Image/Star/";

    //starEffectCom.texture = cc.url.raw(path+this.ColorStr[colorType]);

    starEffectCom.resetSystem();

    var time = starEffectCom.life;

    this.scheduleOnce(function () {
      this._ShotBoomEffectList.push(starEffectNode);
      starEffectNode.active = false;
    }, time);
  },
});
